package com.woniu.utils.consumer;


import com.woniu.utils.utils.RedisKeyUtil;
import com.woniu.utils.utils.RedisUtil;
import com.woniu.utils.utils.SMSUtil;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
@RabbitListener(queues = "login_phone_queue")
public class LoginCodeConsumer {

    @Autowired
    private SMSUtil smsUtil;
    @Autowired
    private RedisUtil redisUtil;

    @RabbitHandler
    public void sendLoginCode(String mobile){
        System.out.println("取出sendLoginCode的手机号"+mobile);
        Integer code=(int)(Math.random()*900000)+100000;

        String result = smsUtil.sendCode(mobile,code+"");
        //发送成功
        if(result.equals("2")) {

            //将验证码保存到Redis
            redisUtil.set(RedisKeyUtil.sendLoginCodeKey(mobile), code+"", 5*60);
            //保存一个一分钟的键值对 存入redis 用来作用与 用户在一分钟不能发送第二条短信
            redisUtil.set(RedisKeyUtil.loginCodeOnMinute(mobile),"",60);
            //重置错误次数
            redisUtil.del(RedisKeyUtil.codeErrorNumber(mobile));

            //还得保存一个key 要求用户在一小时内发送验证码的总次数
            //1.首先 用户第一次发送验证码 时 要先创建一个 key
            if (!redisUtil.exist(RedisKeyUtil.sendMessageNumber(mobile))){
                redisUtil.set(RedisKeyUtil.sendMessageNumber(mobile),"1",60*60);

            }else {//不是第一次 则++
                redisUtil.incr(RedisKeyUtil.sendMessageNumber(mobile));
                //System.out.println("我进来了");
            }

        }
    }
}
